package com.achievo.know.application;

import java.util.List;

import com.achievo.know.domain.File;
import com.achievo.know.domain.FileAttachment;
import com.achievo.know.domain.TempAttachment;
import com.achievo.know.domain.UserFavorite;
import com.dayatang.querychannel.support.Page;

public interface FileApplication {

	/**
	 * 分页查询文件列表
	 * @param status 通过状态查询
	 * @return
	 */
	public Page<File> queryPageByStatus(String userName,String status,int currentPage,int pageSize);
	/**
	 * 管理员列表
	 * @param status
	 * @param currentPage
	 * @param pageSize
	 * @param isSuper 
	 * @return
	 */
	public Page<File> queryPageByStatus(String status,
			int currentPage, int pageSize,List<Long> cateIds, boolean isSuper);
	/**
	 * 我的收藏
	 * @param userName
	 * @param currentPage
	 * @param pageSize
	 * @return
	 */
	public Page<File> queryMyFavorite(String userName,int currentPage,int pageSize);
	
	/**
	 * 批量删除文件
	 * @param ids
	 */
	public void batchDelete(String[] ids);
	/**
	 * 批量删除收藏
	 * @param ids
	 */
	public void batchDeleteFavorite(String[] ids);
	/**
	 * 保存文件
	 * @param file
	 */
	public void addFile(File file);
	
	public void addTempAttachment(TempAttachment temp);
	
	public List<TempAttachment> loadTempAttach(String tempFileId);
	
	public void deleteAttach(Long attachId);
	
	public File getFile(Long fileId);
	/**
	 * 显示文件，统计浏览量
	 * @param fileId
	 * @return
	 */
	public File showFile(Long fileId);
	
	public FileAttachment getAttachment(Long id);
	
	public List<FileAttachment> listAttachment(Long fkId,int type);
	
	
	public void saveOrUpdateFile(File file);
	/**
	 * 添加收藏
	 * @param uf
	 * @param userId
	 */
	public void addFavorite(UserFavorite uf, String userId);
	public FileAttachment downAttachment(Long id);
	public void saveOrUpdateTempAttach(TempAttachment temp);
	/**
	 * 更改分类
	 * @param idArr
	 * @param category 
	 */
	public void changeCate(String[] idArr, String category);
	/**
	 * 更改状态
	 * @param idArr
	 * @param status
	 */
	public void changeStatus(String[] idArr, String status);
	/**
	 * 管理员保存
	 * @param files
	 */
	public void addFiles(List<File> files);
	
	public void saveOrUpdateFileAttachment(FileAttachment atts);
	public FileAttachment getAttachmentByGuid(String guid);
	public FileAttachment getFileByName(String fileName);
	
}
